package com.ydx.meituan.protocol;


import com.ydx.meituan.exception.RequestException;

/**
 *
 *Description:构建返回结果的工具
 *
 */
public class ResultUtils {

    /**
     * 构建一个NetResult<DataType>类型的返回结果
     *
     * @param obj
     * @param <DataType>
     * @return
     */
    public static <DataType> NetResult<DataType> buildResult(DataType obj) {
        NetResult<DataType> result = new NetResult<>();
        result.setResult(NetResult.SUCCESS);
        result.setMessage(NetResult.MSG_SUCCESS);
        result.setData(obj);
        return result;
    }



    /**
     * 构造一个请求错误的结果
     *
     * @param errInfo    错误信息
     * @param <DataType>
     * @return
     */
    public static <DataType> NetResult<DataType> buildError(String errInfo) {
        NetResult<DataType> result = new NetResult<>();
        result.setResult(NetResult.ERROR);
        result.setMessage(errInfo);
        result.setData(null);
        return result;
    }


    /**
     * 构造一个自定义错误码的结果
     *
     * @param code
     * @param errInfo
     * @param <DataType>
     * @return
     */
    public static <DataType> NetResult<DataType> buildError(int code, String errInfo) {
        NetResult<DataType> result = new NetResult<>();
        result.setResult(code);
        result.setMessage(errInfo);
        result.setData(null);
        return result;
    }


    public static <DataType> NetResult<DataType> buildError(int code, String errInfo,DataType data) {
        NetResult<DataType> result = new NetResult<>();
        result.setResult(code);
        result.setMessage(errInfo);
        result.setData(data);
        return result;
    }


    /**
     * 构造请求异常的返回结果
     *
     * @param re         请求异常
     * @param <DataType>
     * @return
     */
    public static <DataType> NetResult<DataType> buildError(RequestException re) {
        return buildError(re.getCode(), re.getMessage(),(DataType)re.getData());
    }

}
